home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / IEFMUL.SA < prev    next >
Text File  |  1989-08-30  |  5KB  |  100 lines

  1.        TTL     IEEE FORMAT EQUIVALENT MULTIPLY (IEFMUL)
  2. ***************************************
  3. * (C) COPYRIGHT 1981 BY MOTOROLA INC. *
  4. ***************************************
  5.  
  6. *************************************************************
  7. *                       IEFMUL                              *
  8. *  FAST FLOATING POINT IEEE FORMAT EQUIVALENT MULTIPLY      *
  9. *                                                           *
  10. *  IEFMUL - IEEE FORMAT EQUIVALENT FLOATING POINT MULTIPLY  *
  11. *                                                           *
  12. *  INPUT:  D6 - IEEE FORMAT NUMBER MULTIPLIER (SOURCE)      *
  13. *          D7 - IEEE FORMAT NUMBER MULTIPLICAN (DESTINATION)*
  14. *                                                           *
  15. *  OUTPUT: D7 - IEEE FORMAT FLOATING RESULT OF REGISTER D6  *
  16. *               MULTIPLIED BY REGISTER D7                   *
  17. *                                                           *
  18. *  CONDITION CODES:                                         *
  19. *          N - RESULT IS NEGATIVE                           *
  20. *          Z - RESULT IS ZERO                               *
  21. *          V - RESULT IS NAN (NOT-A-NUMBER)                 *
  22. *          C - UNDEFINED                                    *
  23. *          X - UNDEFINED                                    *
  24. *                                                           *
  25. *           ALL REGISTERS TRANSPARENT                       *
  26. *                                                           *
  27. *        MAXIMUM STACK USED:   24 BYTES                     *
  28. *                                                           *
  29. *  RESULT MATRIX:            ARG 2                          *
  30. *                NORMALIZED  ZERO       INF        NAN      *
  31. *     ARG 1      ****************************************   *
  32. *   NORMALIZED   *   A    *    B    *    C     *    F   *   *
  33. *   ZERO         *   B    *    B    *    D     *    F   *   *
  34. *   INFINITY     *   C    *    D    *    C     *    F   *   *
  35. *   NAN          *   E    *    E    *    E     *    F   *   *
  36. *                ****************************************   *
  37. *               (DENORMALIZED VALUES ARE TREATED AS ZEROES) *
  38. *       A = RETURN MULTIPLY RESULT, OVERFLOW TO INFINITY,   *
  39. *           UNDERFLOW TO ZERO                               *
  40. *       B = RETURN ZERO                                     *
  41. *       C = RETURN INFINITY                                 *
  42. *       D = RETURN NEWLY CREATED NAN (NOT-A-NUMBER) FOR     *
  43. *           ILLEGAL OPERATION
  44. *       E = RETURN ARG1 (NAN) UNCHANGED                     *
  45. *       F = RETURN ARG2 (NAN) UNCHANGED                     *
  46. *                                                           *
  47. *  NOTES:                                                   *
  48. *    1) ZEROES AND INFINITIES ARE RETURNED WITH PROPER      *
  49. *       SIGN (EXCLUSIVE OR OF INPUT ARGUMENT SIGN BITS).    *
  50. *    2) SEE THE MC68344 USER'S GUIDE FOR A DESCRIPTION OF   *
  51. *       THE POSSIBLE DIFFERENCES BETWEEN THE RESULTS        *
  52. *       RETURNED HERE VERSUS THOSE REQUIRED BY THE          *
  53. *       IEEE STANDARD.                                      *
  54. *                                                           *
  55. *************************************************************
  56.          PAGE
  57. IEFMUL IDNT    1,1  IEEE FORMAT EQUIVALENT MULTIPLY
  58.  
  59.          OPT       PCS
  60.  
  61.          XDEF      IEFMUL    IEEE FORMAT EQUIVALENT MULTIPLY
  62.  
  63.          XREF      9:IEFDOP  DOUBLE ARGUMENT CONVERSION ROUTINE
  64.          XREF      9:IEFRTNAN CREATE AND RETURN NAN RESULT ROUTINE
  65.          XREF      9:IEFTIEEE RETURN AND CONVERT BACK TO IEEE FORMAT
  66.          XREF      9:IEFRTIE  RETURN SIGNED INFINITY EXCLUSIVE OR'ED
  67.          XREF      9:IEFRTSZE RETURN SIGNED ZERO EXCLUSIVE OR'ED
  68.          XREF      9:FFPMUL2   REFERENCE FFP PERFECT PRECISION MULTIPLY ROUTINE
  69.        XREF    FFPCPYRT        COPYRIGHT NOTICE
  70.  
  71.          SECTION  9
  72.  
  73. ***********************************************
  74. * IEEE FORMAT EQUIVALENT MULTIPLY ENTRY POINT *
  75. ***********************************************
  76. IEFMUL   BSR       IEFDOP    DECODE BOTH OPERANDS
  77.          BRA.S     IEFNRM    +0 BRANCH NORMALIZED
  78.          BRA.S     IEFINF2   +2 BRANCH ONLY ARG2 INFINITY
  79.          BRA.S     IEFINF1   +4 BRANCH ONLY ARG1 INFINITY
  80. * BOTH INFINITY, RETURN PROPER SIGN     +6 BOTH ARE INFINITY
  81. IEFRTINF BRA       IEFRTIE   RETURNE INFINITY WITH PROPER SIGN
  82.  
  83. * ARG1 INFINITY - SWAP ARGUMENTS AND TREAT AS ARG2
  84. IEFINF1  EXG.L     D6,D7     SWAP FOR NEXT CODE PORTION
  85.  
  86. * ARG2 INFINITY - IF OPPOSITE ARGUMENT IS ZERO THAN ILLEGAL AND RETURN NAN
  87. IEFINF2  TST.L     D6        ? IS OPPOSITE ARGUMENT A ZERO
  88.          BNE.S     IEFRTINF  NO, GO RETURN INFINITY WITH PROPER SIGN
  89.          BRA       IEFRTNAN  YES, RETURN A NAN FOR THIS ILLEGAL OPERATION
  90.  
  91. * NORMALIZED NUMBERS(OR ZERO) - DO THE MULTIPLY
  92. IEFNRM   BSR       FFPMUL2   DO FAST FLOATING POINT ADD
  93.          BNE       IEFTIEEE  CONVERT RESULT BACK TO IEEE FORMAT
  94.  
  95. * RESULT IS ZERO SO RETURN ZERO WITH PROPER SIGN
  96.          BRA       IEFRTSZE  RETURN ZERO WITH EXCLUSIVELY OR'ED SIGNED
  97.  
  98.          END
  99.  
  100.